一文必懂 |
您所在的位置:网站首页 › 域名解析是 协议程序需要实现的功能 › 一文必懂 |
计算机网络
网络参考模型DNS协议
域名分级域名服务器域名解析过程 HTTP协议
HTTP报文格式HTTP请求过程 HTTPS
SSL/TLS
摘要算法加密算法数字证书HTTPS执行过程 TCP
特点TCP结构TCP连接管理三次握手
为什么需要三次握手?为什么要传回 SYN传了 SYN,为啥还要传 ACK 四次挥手
为什么要四次挥手为什么等待 2MSL后释放连接字节流的协议 TCP与UDP的区别
数据可靠性传输
停止等待协议重传机制请求报文丢失 滑动窗口协议与累计确认(延时ack)拥塞控制
网络参考模型
原始的网络比较复杂,涉及很多方面,如下图所示: 提出了: OSI:Open System Interconnection Reference Model, 开放系统互联参考模型。TCP/IP协议族;OSI模型分为七层,TCP/IP分为五层;每层都有对应的网络协议,常见如DNS、HTTP、SMTP、TCP、UDP、IP等协议; 域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。 如图: 域名是分层结构,域名服务器也是对应的层级结构。 ![]() 协议是 超文本传输协议无状态的请求/应答方式的可扩展的与 基于网络的超文本信息系统灵活的互动 HTTP报文格式HTTP 协议的请求报文和响应报文的结构基本相同,由三大部分组成: 起始行(start line):描述请求或响应的基本信息头部字段集合(header):使用 key-value 形式更详细地说明报文消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频 等二进制数据![]() ![]() ![]() 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作呢? 首先干活的是 浏览器应用程序,他要解析出 URL中的域名 1.1 浏览器搜索自己的DNS缓存; 1.2 若没有,搜索操作系统中的缓存; 1.3 若没有,搜索操作系统的hosts文件 1.3 若没有,操作系统将域名解析请求发送值本地域名服务器(递归查询),本地域名服务器查询自己的DNS缓存、成功则返回IP地址;若没有、则 1.3.1 向根域名服务器域名解析请求发给根域名服务器、 1.3.2 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名 服务器的地址; 1.3.3 本地域名服务器向顶级域名服务器发起请求 1.3.4 顶级域名服务器告诉本地域名服务器该去哪个权限域名服务器查询; 1.3.5 本地域名服务器向权限域名服务器放弃请求 1.3.6 权限域名服务器服务器查询映射表、返回给本地域名服务器 域名对应的 对应的IP地址 1.3.7 本地域名服务器缓存结果、并将查询结果返回给主机操作系统; 1.4: 操作系统将IP地址返回给浏览器、并缓存查询结果 1.5 至此浏览器得到域名对应的IP地址;三次握手建立TCP连接浏览器发起HTTP请求;服务器接收并解析HTTP请求、查找资源、返回HTTP响应消息;浏览器收到响应之后,开始渲染页面由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,数据不具有可信性。 因此就诞生了为安全而生的HTTPS协议。 这也是为什么进入一些网站、会有一些色情广告的原因… 使用HTTPS时,所有的HTTP请求和响应在发送到网络之前,都要进行 加密。 SSL 即安全套接层(Secure Sockets Layer),后面改名为TLS(传输层安全,Transport Layer Security). 摘要算法 摘要算法能够把任意长度的数据“压缩”成固定长度、而且独一无二 的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。任意微小的数据差异,都可以生成完全不同的摘要。所以可以通过把明文 信息的摘要和明文一起加密进行传输,数据传输到对方之后再进行解 密,重新对数据进行摘要,再比对就能发现数据有没有被篡改。这样就 保证了数据的完整性。例如MD5、SHA1等、![]() TLS 里使用的混合加密方式,即把对称加密和非对称加密结合起来呢, 两者互相取长补短,即能高效地加密解密,又能安全地密钥交换。大致流程如下: 通信开始的时候使用非对称算法如 RSA,ECDHE先解决密钥交换的问 题![]() ![]() ![]() 数字证书组成:CA信息,公钥用户信息,公钥,权威机构的签名,有效期 数字证书作用: 1.通过数字证书向浏览器证明身份 2.数字证书里面包含了公钥 HTTPS执行过程1) 客户端发送带有SYN标志为1、起始序seq号为随机数x的数据包到服务端 ,客户端进入SYN-SENT状态、 2)服务端发送带有SYN/ACK标志的数据包,其确认字段值ack=x+1,seq=y 包到客户端;服务端进入SYN-RECEIVED状态;客户端接收服务端的ACK包、进入ESTABLISH状态(连接建立完成) 3)客户端发送带有ACK标志的数据包给服务端、其中ack=y+1;服务端进入ESTABLISHED状态(连接建立完成状态) ![]() 为了建立可靠的通信信道,数据的通讯就是数据的发送和接收,而三次握手的主要目的就是双方确认自己和对方的发送和接收是正常的。 第一次握手:客户端发送正常,服务端确认了对方发送正常,自己接收正常。 第二次握手: 客户端确认了:自己发送,接收正常,对方发送,接收正常。Server确认了对方发送正常,自己接收正常。 第三次握手:客户端确认:自己发送,接收正常,对方发送,接收正常;服务端确认:自己发送,接收正常,对方发送,接收正常。 三次握手就能确认双发收发功能都正常,缺一不可。 为什么要传回 SYN接收端传回发送端所接受的SYN为了告诉发送端,我接受的信息确实就是你发送的信号。 传了 SYN,为啥还要传 ACK双方通信无误必须是两者相互发送信息都无误。传了SYN,证明发送方到接收方的通道没有问题。 但是接收方到发送方的通道还需要ACK信号来验证。 四次挥手1)客户端发送一个FIN,用来关闭客户端到服务器端的数据传送; 2)服务器收到FIN,它发回一个ACK,确认序号为收到的序号+1;和SYN一样,一个FIN将占用一个序号; 3)服务器关闭与客户端的连接、发送一个FIN给客户端; 4)客户端受到FIN,发送一个ACK包给服务端,并将序号设为收到序号+1;客户端关闭与服务端的连接。 任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。 当另一方也没有数据再传送时,则发出连接释放通知,对方确认后,就完全关闭了TCP连接。 为什么等待 2MSL后释放连接 防止报文丢失、导致B重复发送FIN; 如果A的响应报文丢失、B端会再次发送、如果不等待就关闭、那么B端连接无法关闭;防止滞留在网络中的报文、对新建立的连接造成数据扰乱; 如果A收到FIN包后就关闭、B端在发送FIN包附近时间点可能也发送其他的数据包、这些数据包延迟了,且A关闭、就会造成B的数据包滞留在网络中。 字节流的协议TCP把应用交付的数据仅仅看成时一连串的无结构的字节流,TCP并不 知道字节流的含义,TCP并不关心应用程序一次将多大的报文发送到 TCP的缓存中,而是根据对方给出的窗口值和当前网络拥堵的程度来决 定一个报文段应该包含多少个字节。
如果在一定时间内、没有接受到ACK报文、则认为数据包丢失了。 滑动窗口大小同通过 tcp三次握手和对端协商,且受网络状况影响 了解即可、可略过; P拥塞控制 为了更好对TCP进行拥塞控制,因特网建议标准定义了以下四种算法:慢开始,拥塞避免,快重传,快恢复。首先在TCP要求发送端维护两个窗口: 1) 接收窗口rwnd,接收方根据当前缓存大小锁许诺的最新窗口值。 2) 拥塞窗口cwnd ,发送方根据自己估算的网络拥塞程度而设置的窗口值。 发送窗口的上限是取这两者的最小值。 慢开始: TCP刚连接好时,先令拥塞窗口cwnd =1 ,在每次收到一个对新报文段的确认时将cwnd加倍. Cwnd的大小呈指数增长。 拥 塞避免算法: 当cwnd大于等于慢开始门限ssthresh时,cwnd窗口每次加1而不是加倍。当发送方检测到超时事件的发生时,就将慢开始门限设置为当前cwnd的一半,同时将cwnd设置为1. 这样的目的是迅速减少主机发送到网络的分组数,使得发生拥塞的路由器有足够的时间吧队列中积压的分组处理完毕。 快重传:当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。 快恢复:当发送端收到连续三个冗余的ACK时,就执行“乘法减小”算法,把慢开始门限ssthresh减半,cwnd设置为慢开始门限减半后的数值(与慢开始不同)。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |